package com.itheima.service;

import com.itheima.dao.BrandMapper;
import com.itheima.domain.Brand;
import com.itheima.util.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

/*
    品牌的 业务逻辑层
 */
public class BrandService {

    /**
     * 查询所有
     * @return
     */
    public List<Brand> findAll() {
        // 直接调用dao层的方法
        SqlSession sqlSession = MyBatisUtils.openSession();
        // 获得dao层接口的代理类对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        // 调用方法
        List<Brand> brands = brandMapper.selectAll();
        sqlSession.close();
        // 返回
        return brands;
    }

    /**
     * 添加
     * @param brand
     */
    public void addBrand(Brand brand) {
        // 直接调用dao层的方法
        SqlSession sqlSession = MyBatisUtils.openSession();
        // 获得dao层接口的代理类对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        // 调用方法
        brandMapper.addBrand(brand);
        // 提交事务
        sqlSession.commit();
        sqlSession.close();
    }

    /**
     * 查询指定
     * @param id
     * @return
     */
    public Brand findById(int id) {
        // 直接调用dao层的方法
        SqlSession sqlSession = MyBatisUtils.openSession();
        // 获得dao层接口的代理类对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        // 调用方法
        Brand brand = brandMapper.findById(id);
        sqlSession.close();
        //返回
        return brand;
    }

    /**
     *  修改指定品牌信息
     *
     * @param brand
     */
    public void updateBrand(Brand brand) {
        // 直接调用dao层的方法
        SqlSession sqlSession = MyBatisUtils.openSession();
        // 获得dao层接口的代理类对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        // 调用方法
        brandMapper.updateBrand(brand);
        // 提交事务
        sqlSession.commit();
        sqlSession.close();
    }

    /**
     * 删除指定
     * @param id
     */
    public void deleteById(int id) {
        // 直接调用dao层的方法
        SqlSession sqlSession = MyBatisUtils.openSession();
        // 获得dao层接口的代理类对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        // 调用方法
        brandMapper.deleteById(id);
        sqlSession.commit();
        sqlSession.close();
    }
}
